package com.wkbb.common.base;

import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

public interface BaseMapper<T> {

	/**
	 * 查询单条数据
	 */
	T getByPrimaryKey(Long id);

	/**
	 * 传入Map<String,String>类型查询条件
	 */
	T getByMapParams(Map<String, Object> params);

	/**
	 * 按条件查询所有，条件里可以自己写sql 默认mybatis-generator 自动生成的mapper里面没有这个接口，需要自己添加。
	 */
	List<T> getListByMapParams(Map<String, Object> params);

	/**
	 * 分页查询 默认mybatis-generator 自动生成的mapper里面没有这个接口，需要自己添加。
	 */
	List<T> getListByPage(Map<String, Object> params);

	/**
	 * 新增单个数据
	 */
	Long insert(T entity);

	/**
	 * 批量新增数据
	 */
	void insertBatch(@Param("list")List<T> list);

	/**
	 * 修改单个数据
	 */
	int updateByPrimaryKey(Long id);

	/**
	 * 修改单个数据
	 */
	int update(T entity);

	/**
	 * 批量修改数据
	 */
	void updateBatch(@Param("list")List<T> list);

	/**
	 * 删除单个数据
	 */
	int deleteByPrimaryKey(Long id);

	/**
	 * 删除单个数据
	 */
	int delete(T entity);

	/**
	 * 批量删除数据
	 */
	void deleteBatch(@Param("list")List<T> list);

	/**
	 * 查询单个数据
	 */
	T find(T entity);

	/**
	 * 查询多个数据
	 */
	List<T> findList(T entity);

}
